Page({
  data: {
    currentDate: new Date().getTime(),
    mobile: '',
    description: '', // 问题描述
    houseLayerVisible: false,
    repairLayerVisible: false,
    dateLayerVisible: false,
    houseInfo: '', // 报修房屋
    repairItemName: '', // 报修项目
    houseList: [],
    repairItem: [],
    attachment: [],
  },
  onLoad({ id }) {
    this.getHouseList()
    this.getRepairItem()
    // console.log(id, '修改房屋id')
    // 有id就是修改报修信息
    if (id) {
      // 修改标题信息
      wx.setNavigationBarTitle({
        title: '修改报修信息',
      })
      this.getRepairDetail(id)
    }
  },

  // 发请求获取数据
  async getRepairDetail(id) {
    if (!id) return
    const res = await wx.http.get(`/repair/${id}`)
    // console.log(res, '获取报修详情')
    this.setData({
      ...res.data
    })
  },

  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openRepairLayer() {
    this.setData({ repairLayerVisible: true })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false,
    })
  },

  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },

  // 校验是否上传了报修的房屋
  checkHouse() {
    const vaild = Boolean(this.data.houseId)
    // console.log(vaild)
    if (!vaild) return wx.utils.toast('请选择报修的房屋')
    return vaild
  },
  // 校验是否上传了报修的项目
  checkRepairItem() {
    const vaild = Boolean(this.data.repairItemId)
    // console.log(vaild)
    if (!vaild) return wx.utils.toast('请选择报修的项目')
    return vaild
  },
  // 校验手机号
  checkMobile() {
    const reg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1589]))\d{8}$/
    const vaild = reg.test(this.data.mobile.trim())
    if (!vaild) return wx.utils.toast('请输入合法的手机号')
    return vaild
  },
  // 校验日期
  checkDate() {
    const reg = /^\d{4}[-|/]\d{2}[-|/closeDateLayer]\d{2}$/
    const vaild = reg.test(this.data.appointment)
    if (!vaild) return wx.utils.toast('请选择报修日期')
    return vaild
  },
  // 校验问题描述
  checkDescription() {
    const vaild = this.data.description !== ''
    if (!vaild) return wx.utils.toast('请输入问题描述')
    return vaild
  },
  // 校验是否上传了附件
  checkImg() {
    const vaild = this.data.attachment.length !== 0
    if (!vaild) return wx.utils.toast('请上传问题附件')
    return vaild
  },
  // 表单提交
  onSubmit() {
    // console.log(1111)
    if (!this.checkHouse()) return
    if (!this.checkRepairItem()) return
    if (!this.checkMobile()) return
    if (!this.checkDate()) return
    if (!this.checkDescription()) return
    if (!this.checkImg()) return
    // 发请求
    // console.log(this.data)
    const { id, houseId, repairItemId, mobile, appointment, description, attachment } = this.data
    wx.http.post('/repair', { id, houseId, repairItemId, mobile, appointment, description, attachment })
    wx.utils.toast('提交成功')
    // 跳转页面
    wx.reLaunch({
      url: '/repair_pkg/pages/list/index',
    })
  },
  // 维修房屋
  selectHouse(e) {
    console.log(e)
    const { name, id: houseId } = e.detail
    this.setData({
      houseInfo: name,
      houseId
    })
  },
  // 维修项目
  selectItem(e) {
    // console.log(e)
    const { name, id: repairItemId } = e.detail
    this.setData({
      repairItemName: name,
      repairItemId
    })
  },
  // 报修时间
  selectDate(e) {
    // console.log(e)
    const time = wx.utils.formatTime(e.detail)
    this.setData({
      dateLayerVisible: false,
      appointment: time
    })
  },
  // 上传图片
  afterRead(event) {
    // console.log(event)
    const { file } = event.detail
    // 当设置 mutiple 为 true 时, file 为数组格式，否则为对象格式
    wx.uploadFile({
      url: 'https://live-api.itheima.net/upload', // 仅为示例，非真实的接口地址
      filePath: file.url,
      name: 'file',
      header: {
        Authorization: `Bearer ${getApp().token}`
      },
      success: (res) => {
        // console.log(res, 11)
        // 上传完成需要更新 fileList
        // 将服务器响应回来的数据转换为 对象
        const { data } = JSON.parse(res.data)
        // 用一个空的数组来接收数据
        const { attachment = [] } = this.data;
        attachment.push({ ...data });
        this.setData({
          attachment
        });
      },
    });
  },
  // 查询审核通过的房屋
  async getHouseList() {
    const { data } = await wx.http.get('/house')
    this.setData({
      houseList: data
    })
  },
  // 查询需要报修的项目
  async getRepairItem() {
    const { data } = await wx.http.get('/repairItem')
    this.setData({
      repairItem: data
    })
  }
})
